<template>
  <view>
    <!-- 列表 -->
    <view class="goods-list">
      <!-- 列表 -->
      <my-goods v-for="(v, i) in queryList" :key="i" :v="v" @click="toDetail(v.goods_id)"></my-goods>
    </view>
  </view>
</template>

<script>
  export default {
    // 下拉刷新事件
    async onPullDownRefresh() {
      // 页码归1
      this.queryData.pagenum = 1;
      // 数据清空
      this.queryList = []
      // 总数据量 0
      this.total = 0
      // 发送请求
      await this.getQueryList()
      // 结束下拉刷新
      uni.stopPullDownRefresh()
    },
    // 滑动底部事件
    onReachBottom() {
      // 节流
      if (this.isLoading) return;
      // 是否存在下一页数据
      if (this.queryList.length >= this.total) return uni.showToast({
        title: '没有更多数据了',
      })
      // 加载下一页数据
      this.queryData.pagenum++;
      // 发送请求
      this.getQueryList()
    },
    onLoad(options) {
      // 保存查询数据
      this.queryData.query = options.query || ''
      this.queryData.cid = options.cid || ''
      // 查询搜索的数据
      this.getQueryList()
    },
    data() {
      return {
        // 查询参数
        queryData: {
          // 查询关键字
          query: '',
          // 查询id
          cid: '',
          // 页码
          pagenum: 1,
          // 个数
          pagesize: 10
        },
        // 查询结果列表
        queryList: [],
        // 总数据量
        total: 0,
        // 节流阀
        isLoading: false
      };
    },
    methods: {
      toDetail(id) {
        uni.navigateTo({
          url: '/subpkg/goods_detail/goods_detail?goods_id=' + id
        })
      },

      async getQueryList() {
        this.isLoading = true
        const resp = await uni.$http.get('/api/public/v1/goods/search', this.queryData);
        this.isLoading = false
        const {
          message,
          meta
        } = resp.data;
        // 错误验证
        if (meta.status !== 200) return uni.showToast({
          title: '请求错误！！',
          icon: 'error'
        });
        const {
          goods,
          total
        } = message
        // 保存数据
        this.queryList = this.queryList.concat(goods)
        this.total = total

      }
    }
  }
</script>

<style lang="scss" scoped>

</style>
